/**
 * <copyright>
 * </copyright>
 *
 * $Id$
 */
package org.obeonetwork.dsl.spem.extension.spem_ifest.util;

import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.EPackage;

import org.eclipse.emf.ecore.util.Switch;

import org.obeonetwork.dsl.spem.BreakdownElement;
import org.obeonetwork.dsl.spem.DescribableElement;
import org.obeonetwork.dsl.spem.ExtensibleElement;
import org.obeonetwork.dsl.spem.Guidance;
import org.obeonetwork.dsl.spem.MethodContentElement;
import org.obeonetwork.dsl.spem.MethodContentPackage;
import org.obeonetwork.dsl.spem.MethodContentPackageableElement;
import org.obeonetwork.dsl.spem.MethodLibrary;
import org.obeonetwork.dsl.spem.MethodPluginPackageableElement;
import org.obeonetwork.dsl.spem.ProcessElement;
import org.obeonetwork.dsl.spem.ProcessPackageableElement;
import org.obeonetwork.dsl.spem.VariabilityElement;
import org.obeonetwork.dsl.spem.WorkBreakdownElement;
import org.obeonetwork.dsl.spem.WorkDefinition;
import org.obeonetwork.dsl.spem.WorkProductDefinition;

import org.obeonetwork.dsl.spem.extension.spem_ifest.*;
import org.obeonetwork.dsl.spem.uma.GuidancePackage;

/**
 * <!-- begin-user-doc -->
 * The <b>Switch</b> for the model's inheritance hierarchy.
 * It supports the call {@link #doSwitch(EObject) doSwitch(object)}
 * to invoke the <code>caseXXX</code> method for each class of the model,
 * starting with the actual class of the object
 * and proceeding up the inheritance hierarchy
 * until a non-null result is returned,
 * which is the result of the switch.
 * <!-- end-user-doc -->
 * @see org.obeonetwork.dsl.spem.extension.spem_ifest.Spem_ifestPackage
 * @generated
 */
public class Spem_ifestSwitch<T> extends Switch<T> {
	/**
	 * The cached model package
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected static Spem_ifestPackage modelPackage;

	/**
	 * Creates an instance of the switch.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public Spem_ifestSwitch() {
		if (modelPackage == null) {
			modelPackage = Spem_ifestPackage.eINSTANCE;
		}
	}

	/**
	 * Checks whether this is a switch for the given package.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @parameter ePackage the package in question.
	 * @return whether this is a switch for the given package.
	 * @generated
	 */
	@Override
	protected boolean isSwitchFor(EPackage ePackage) {
		return ePackage == modelPackage;
	}

	/**
	 * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the first non-null result returned by a <code>caseXXX</code> call.
	 * @generated
	 */
	@Override
	protected T doSwitch(int classifierID, EObject theEObject) {
		switch (classifierID) {
			case Spem_ifestPackage.ENGINEERING_DOMAIN: {
				EngineeringDomain engineeringDomain = (EngineeringDomain)theEObject;
				T result = caseEngineeringDomain(engineeringDomain);
				if (result == null) result = caseOntologyLinkedElement(engineeringDomain);
				if (result == null) result = caseMethodContentElement(engineeringDomain);
				if (result == null) result = caseDescribableElement(engineeringDomain);
				if (result == null) result = caseMethodContentPackageableElement(engineeringDomain);
				if (result == null) result = caseVariabilityElement(engineeringDomain);
				if (result == null) result = caseExtensibleElement(engineeringDomain);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case Spem_ifestPackage.TOOL_DEFINITION: {
				ToolDefinition toolDefinition = (ToolDefinition)theEObject;
				T result = caseToolDefinition(toolDefinition);
				if (result == null) result = caseSpem_ToolDefinition(toolDefinition);
				if (result == null) result = caseOntologyLinkedElement(toolDefinition);
				if (result == null) result = caseMethodContentElement(toolDefinition);
				if (result == null) result = caseDescribableElement(toolDefinition);
				if (result == null) result = caseMethodContentPackageableElement(toolDefinition);
				if (result == null) result = caseVariabilityElement(toolDefinition);
				if (result == null) result = caseExtensibleElement(toolDefinition);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case Spem_ifestPackage.VIEWPOINT: {
				Viewpoint viewpoint = (Viewpoint)theEObject;
				T result = caseViewpoint(viewpoint);
				if (result == null) result = caseOntologyLinkedElement(viewpoint);
				if (result == null) result = caseMethodContentElement(viewpoint);
				if (result == null) result = caseDescribableElement(viewpoint);
				if (result == null) result = caseMethodContentPackageableElement(viewpoint);
				if (result == null) result = caseVariabilityElement(viewpoint);
				if (result == null) result = caseExtensibleElement(viewpoint);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case Spem_ifestPackage.TASK_DEFINITION: {
				TaskDefinition taskDefinition = (TaskDefinition)theEObject;
				T result = caseTaskDefinition(taskDefinition);
				if (result == null) result = caseOntologyLinkedElement(taskDefinition);
				if (result == null) result = caseSpem_TaskDefinition(taskDefinition);
				if (result == null) result = caseWorkDefinition(taskDefinition);
				if (result == null) result = caseMethodContentElement(taskDefinition);
				if (result == null) result = caseDescribableElement(taskDefinition);
				if (result == null) result = caseMethodContentPackageableElement(taskDefinition);
				if (result == null) result = caseVariabilityElement(taskDefinition);
				if (result == null) result = caseExtensibleElement(taskDefinition);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case Spem_ifestPackage.ARTIFACT_DEFINITION: {
				ArtifactDefinition artifactDefinition = (ArtifactDefinition)theEObject;
				T result = caseArtifactDefinition(artifactDefinition);
				if (result == null) result = caseOntologyLinkedElement(artifactDefinition);
				if (result == null) result = caseGuidance(artifactDefinition);
				if (result == null) result = caseMethodContentElement(artifactDefinition);
				if (result == null) result = caseDescribableElement(artifactDefinition);
				if (result == null) result = caseMethodContentPackageableElement(artifactDefinition);
				if (result == null) result = caseVariabilityElement(artifactDefinition);
				if (result == null) result = caseExtensibleElement(artifactDefinition);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case Spem_ifestPackage.SPEM_IFEST: {
				SPEM_IFEST speM_IFEST = (SPEM_IFEST)theEObject;
				T result = caseSPEM_IFEST(speM_IFEST);
				if (result == null) result = caseMethodLibrary(speM_IFEST);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case Spem_ifestPackage.TOOL_TYPE: {
				ToolType toolType = (ToolType)theEObject;
				T result = caseToolType(toolType);
				if (result == null) result = caseOntologyLinkedElement(toolType);
				if (result == null) result = caseSpem_ToolDefinition(toolType);
				if (result == null) result = caseMethodContentElement(toolType);
				if (result == null) result = caseDescribableElement(toolType);
				if (result == null) result = caseMethodContentPackageableElement(toolType);
				if (result == null) result = caseVariabilityElement(toolType);
				if (result == null) result = caseExtensibleElement(toolType);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case Spem_ifestPackage.ENGINEERING_DOMAIN_PACKAGE: {
				EngineeringDomainPackage engineeringDomainPackage = (EngineeringDomainPackage)theEObject;
				T result = caseEngineeringDomainPackage(engineeringDomainPackage);
				if (result == null) result = caseMethodContentPackage(engineeringDomainPackage);
				if (result == null) result = caseMethodContentPackageableElement(engineeringDomainPackage);
				if (result == null) result = caseMethodPluginPackageableElement(engineeringDomainPackage);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case Spem_ifestPackage.TOOL_TYPE_PACKAGE: {
				ToolTypePackage toolTypePackage = (ToolTypePackage)theEObject;
				T result = caseToolTypePackage(toolTypePackage);
				if (result == null) result = caseMethodContentPackage(toolTypePackage);
				if (result == null) result = caseMethodContentPackageableElement(toolTypePackage);
				if (result == null) result = caseMethodPluginPackageableElement(toolTypePackage);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case Spem_ifestPackage.META_MODEL: {
				MetaModel metaModel = (MetaModel)theEObject;
				T result = caseMetaModel(metaModel);
				if (result == null) result = caseMethodContentElement(metaModel);
				if (result == null) result = caseOntologyLinkedElement(metaModel);
				if (result == null) result = caseDescribableElement(metaModel);
				if (result == null) result = caseMethodContentPackageableElement(metaModel);
				if (result == null) result = caseVariabilityElement(metaModel);
				if (result == null) result = caseExtensibleElement(metaModel);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case Spem_ifestPackage.META_MODEL_PACKAGE: {
				MetaModelPackage metaModelPackage = (MetaModelPackage)theEObject;
				T result = caseMetaModelPackage(metaModelPackage);
				if (result == null) result = caseMethodContentPackage(metaModelPackage);
				if (result == null) result = caseMethodContentPackageableElement(metaModelPackage);
				if (result == null) result = caseMethodPluginPackageableElement(metaModelPackage);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case Spem_ifestPackage.ONTOLOGY_LINKED_ELEMENT: {
				OntologyLinkedElement ontologyLinkedElement = (OntologyLinkedElement)theEObject;
				T result = caseOntologyLinkedElement(ontologyLinkedElement);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case Spem_ifestPackage.ARTIFACT_DEFINITION_PACKAGE: {
				ArtifactDefinitionPackage artifactDefinitionPackage = (ArtifactDefinitionPackage)theEObject;
				T result = caseArtifactDefinitionPackage(artifactDefinitionPackage);
				if (result == null) result = caseGuidancePackage(artifactDefinitionPackage);
				if (result == null) result = caseMethodContentPackage(artifactDefinitionPackage);
				if (result == null) result = caseMethodContentPackageableElement(artifactDefinitionPackage);
				if (result == null) result = caseMethodPluginPackageableElement(artifactDefinitionPackage);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case Spem_ifestPackage.ARTIFACT: {
				Artifact artifact = (Artifact)theEObject;
				T result = caseArtifact(artifact);
				if (result == null) result = caseWorkProductDefinition(artifact);
				if (result == null) result = caseOntologyLinkedElement(artifact);
				if (result == null) result = caseMethodContentElement(artifact);
				if (result == null) result = caseDescribableElement(artifact);
				if (result == null) result = caseMethodContentPackageableElement(artifact);
				if (result == null) result = caseVariabilityElement(artifact);
				if (result == null) result = caseExtensibleElement(artifact);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case Spem_ifestPackage.ACTIVITY: {
				Activity activity = (Activity)theEObject;
				T result = caseActivity(activity);
				if (result == null) result = caseSpem_Activity(activity);
				if (result == null) result = caseWorkDefinition(activity);
				if (result == null) result = caseWorkBreakdownElement(activity);
				if (result == null) result = caseVariabilityElement(activity);
				if (result == null) result = caseBreakdownElement(activity);
				if (result == null) result = caseProcessElement(activity);
				if (result == null) result = caseDescribableElement(activity);
				if (result == null) result = caseProcessPackageableElement(activity);
				if (result == null) result = caseExtensibleElement(activity);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case Spem_ifestPackage.ARTIFACT_TRANSFORMATION: {
				ArtifactTransformation artifactTransformation = (ArtifactTransformation)theEObject;
				T result = caseArtifactTransformation(artifactTransformation);
				if (result == null) result = caseBreakdownElement(artifactTransformation);
				if (result == null) result = caseProcessElement(artifactTransformation);
				if (result == null) result = caseDescribableElement(artifactTransformation);
				if (result == null) result = caseProcessPackageableElement(artifactTransformation);
				if (result == null) result = caseExtensibleElement(artifactTransformation);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			default: return defaultCase(theEObject);
		}
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Engineering Domain</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Engineering Domain</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseEngineeringDomain(EngineeringDomain object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Tool Definition</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Tool Definition</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseToolDefinition(ToolDefinition object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Viewpoint</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Viewpoint</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseViewpoint(Viewpoint object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Task Definition</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Task Definition</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseTaskDefinition(TaskDefinition object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Artifact Definition</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Artifact Definition</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseArtifactDefinition(ArtifactDefinition object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>SPEM IFEST</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>SPEM IFEST</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseSPEM_IFEST(SPEM_IFEST object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Tool Type</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Tool Type</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseToolType(ToolType object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Engineering Domain Package</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Engineering Domain Package</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseEngineeringDomainPackage(EngineeringDomainPackage object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Tool Type Package</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Tool Type Package</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseToolTypePackage(ToolTypePackage object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Meta Model</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Meta Model</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseMetaModel(MetaModel object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Meta Model Package</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Meta Model Package</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseMetaModelPackage(MetaModelPackage object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Ontology Linked Element</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Ontology Linked Element</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseOntologyLinkedElement(OntologyLinkedElement object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Artifact Definition Package</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Artifact Definition Package</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseArtifactDefinitionPackage(ArtifactDefinitionPackage object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Artifact</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Artifact</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseArtifact(Artifact object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Activity</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Activity</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseActivity(Activity object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Artifact Transformation</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Artifact Transformation</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseArtifactTransformation(ArtifactTransformation object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Extensible Element</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Extensible Element</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseExtensibleElement(ExtensibleElement object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Describable Element</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Describable Element</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseDescribableElement(DescribableElement object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Method Content Packageable Element</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Method Content Packageable Element</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseMethodContentPackageableElement(MethodContentPackageableElement object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Variability Element</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Variability Element</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseVariabilityElement(VariabilityElement object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Method Content Element</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Method Content Element</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseMethodContentElement(MethodContentElement object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Tool Definition</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Tool Definition</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseSpem_ToolDefinition(org.obeonetwork.dsl.spem.ToolDefinition object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Work Definition</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Work Definition</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseWorkDefinition(WorkDefinition object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Task Definition</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Task Definition</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseSpem_TaskDefinition(org.obeonetwork.dsl.spem.TaskDefinition object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Guidance</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Guidance</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseGuidance(Guidance object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Work Product Definition</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Work Product Definition</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseWorkProductDefinition(WorkProductDefinition object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Process Packageable Element</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Process Packageable Element</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseProcessPackageableElement(ProcessPackageableElement object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Process Element</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Process Element</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseProcessElement(ProcessElement object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Breakdown Element</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Breakdown Element</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseBreakdownElement(BreakdownElement object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Work Breakdown Element</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Work Breakdown Element</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseWorkBreakdownElement(WorkBreakdownElement object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Activity</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Activity</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseSpem_Activity(org.obeonetwork.dsl.spem.Activity object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Method Library</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Method Library</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseMethodLibrary(MethodLibrary object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Method Plugin Packageable Element</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Method Plugin Packageable Element</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseMethodPluginPackageableElement(MethodPluginPackageableElement object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Method Content Package</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Method Content Package</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseMethodContentPackage(MethodContentPackage object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Guidance Package</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Guidance Package</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseGuidancePackage(GuidancePackage object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>EObject</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch, but this is the last case anyway.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>EObject</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject)
	 * @generated
	 */
	@Override
	public T defaultCase(EObject object) {
		return null;
	}

} //Spem_ifestSwitch
